// src/users/users.controller.ts
import {
  Controller,
  Get,
  Post,
  Body,
  Patch,
  Param,
  Delete,
  Query,
  HttpException,
  HttpStatus,
} from '@nestjs/common';
import { UsersService } from './user.service';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { ApiOperation, ApiTags } from '@nestjs/swagger';
@ApiTags('用户接口')
@Controller('users') // 接口前缀：/users
export class UsersController {
  constructor(private readonly usersService: UsersService) { }

  // 新增用户：POST /users
  @ApiOperation({ summary: '新增用户' })
  @Post('/create')
  create(@Body() createUserDto: CreateUserDto) {
    return this.usersService.create(createUserDto);
  }

  // 查询所有用户（支持分页和关键词搜索）：GET /users?page=1&limit=10&keyword=xxx
  @Get()
  findAll(
    @Query('page') page: string = '1', // 页码，默认第1页
    @Query('limit') limit: string = '10', // 每页条数，默认10条
    @Query('keyword') keyword?: string, // 搜索关键词（可选）
  ) {
    // 将字符串参数转为数字
    const pageNum = parseInt(page, 10);
    const pageSize = parseInt(limit, 10);
    // 调用服务层方法，传递分页和关键词参数
    return this.usersService.findAll(pageNum, pageSize, keyword);
  }

  // 查询单个用户：GET /users/1（1 是用户 id）
  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.usersService.findOne(+id); // 字符串转数字
  }

  // 更新用户：PATCH /users/1
  @Patch(':id')
  update(@Param('id') id: string, @Body() updateUserDto: UpdateUserDto) {
    return this.usersService.update(+id, updateUserDto);
  }

  // 删除用户：DELETE /users/1
  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.usersService.remove(+id);
  }
}
